SM_DECLARE(
    the_source,
    Parser  parser
    {
        /* 0 */ Exceptions
        {
            Ev_Int_Eol                  error                   Exit
            Ev_Int_Eof                  error                   Exit
            Ev_Int_NotEmptyString       error                   Exit
            Ev_Int_GotNumber            error                   Exit
            Ev_Int_GotName              error                   Exit
            Ev_Int_GotOpenBracket       error                   Exit
            Ev_Int_GotCloseBracket      error                   Exit
            Ev_Int_ParseError           error                   Exit
            Ev_Int_ParseWarning         error                   nojump
        }                           
        /* 1 */ SmName
        {   
            Ev_Sys_OnEntry              init                    nojump
        
            Ev_Int_InitOk               readString              nojump
            Ev_Int_InitBinaryOk         null                    Exit
            Ev_Int_InitFailed           error                   Exit
            
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump

            Ev_Int_GotName              createStateMachine      ExecMode
            Ev_Int_Eof                  null                    Exit

        }
        /* 2 */ ExecMode
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
            
            Ev_Int_GotName              storeExecMode           AtSmEntry
            Ev_Int_GotOpenBracket       null                    StateName
        }
        /* 3 */ AtSmEntry
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
                                                                
            Ev_Int_GotOpenBracket       null                    StateName
        }                                                       
        /* 4 */ StateName
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
                                                                
            Ev_Int_GotName              createState             StateHeartBeatInterval
            Ev_Int_GotCloseBracket      null                    AtSmExit
        }
        /* 5 */ StateHeartBeatInterval
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump

            Ev_Int_GotNumber            storeHeartBeatInterval  StateHeartBeats
            Ev_Int_GotOpenBracket       storeHeartBeatInterval  nojump
            Ev_Int_GotOpenBracket       storeHeartBeats         Event
        }
        /* 6 */ StateHeartBeats
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump

            Ev_Int_GotNumber            storeHeartBeats         AtStateEntry
            Ev_Int_GotOpenBracket       storeHeartBeats         Event
        }
        /* 7 */ AtStateEntry
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
                                                                
            Ev_Int_GotOpenBracket       null                    Event
        }                                                       
        /* 8 */ Event
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
                                                                
            Ev_Int_GotName              createEventRecord       nojump
            Ev_Int_GotName              storeEvent              Action
            
            Ev_Int_GotCloseBracket      null                    StateName
        }
        /* 9 */ Action
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
                                                                
            Ev_Int_GotName              storeAction             NextState
        }                                                       
        /* 10 */ NextState
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
                                                                
            Ev_Int_GotName              storeNextState          AtStateExit
        }                                                       
        /* 11 */ AtStateExit
        {
            Ev_Sys_OnEntry              getLiteral              nojump
            Ev_Int_Eol                  readString              nojump
            Ev_Int_NotEmptyString       getLiteral              nojump
                                                                
            Ev_Int_GotCloseBracket      endOfState              StateName
            Ev_Int_GotName              createEventRecord       nojump
            Ev_Int_GotName              storeEvent              Action
        }                              
        /* 12 */ AtSmExit
        {                              
            Ev_Sys_OnEntry              resolveNextStates       nojump
            Ev_Int_ResolveOk            complete                Exit
        }                                                       
        /* 13 */ Exit
        {
            Ev_Sys_OnEntry              exit                    nojump
        }
    } 
);
